import requests
from lxml import etree
from Chaojiying_Python.chaojiying import Chaojiying_Client
class spider(object):
    def __init__(self):
        #首页接口
        self.index_url="https://so.gushiwen.cn/user/login.aspx?from=http://so.gushiwen.cn/user/collect.aspx"
        self.headers={'user-agent': 'Mozilla/5.0 (Windows NT 6.1) AppleWebKit/534.30 (KHTML, like Gecko) Chrome/12.0.742.113 Safari/534.30'}
        #登录接口
        self.url='https://so.gushiwen.cn/user/login.aspx?from=http://so.gushiwen.cn/user/collect.aspx'
        self.data={
            '__VIEWSTATE': 'vuchrMCgA4Vsd4IEjAkWQRffnepFdjOShLwV2lvePGEwzs13TFREEVpD1mFquq9J4p2I81DCHUpbU7RfQbWiecKJDCkyzi9PB + vmBM + gq9KBkmzJ2GJ3c7 + 20rpcJGowJhcwFGl50pkimaAfHHl5BWnizJg =',
        '__VIEWSTATEGENERATOR': 'C93BE1AE',
        'from': 'http://so.gushiwen.cn/user/collect.aspx',
        'email': '1239453247@qq.com',
        'pwd': '123456789012345',
        'code': '',
        'denglu': '登录',
        }
        #实例化session对象(维持会话,因为访问三次网页链接，会形成三次验证码，所以在第二次访问网页链接（获取验证码）时候才行
        self.s=requests.session()

    #向首页发起请求，解析图片验证码的链接
    def get_index(self):
        r=requests.get(self.index_url,headers=self.headers)
        html_data=r.text
        xml=etree.HTML(html_data)
        img_src='https://so.gushiwen.cn'+xml.xpath('//img[@id="imgCode"]/@src')[0]
        #print(img_src)
        #将图片验证码保存到本地
        img_data=self.s.get(img_src,headers=self.headers).content
        with open ("code.png","wb") as f:
            f.write(img_data)
        #识别验证码
        #超级鹰登录的 账户 密码 软件ID
        chaojiying = Chaojiying_Client('lslols', '12345678asd', '951971')  # 用户中心>>软件ID 生成一个替换 96001
        im = open('./code.png', 'rb').read()  # 本地图片文件路径 来替换 a.jpg 有时WIN系统须要//
        print(chaojiying.PostPic(im, 1004)['pic_str'])
        return chaojiying.PostPic(im, 1004)['pic_str']
    #向登录接口发起请求，实现登录
    def post_user(self):
        code=self.get_index()
        self.data['code']=str(code)
        response=self.s.post(self.url,headers=self.headers,data=self.data)
        print(response.status_code)
        print(response.text)

    #print(html_data)
if __name__=='__main__':
    s=spider()
    s.post_user()